Grundkurs SQL

1.6  Prädikate in der SELECT-Anweisung

Im Normalfall werden Duplikate, also doppelte oder mehrfache gleiche Ergebnisse, innerhalb der Ergebnisliste einer Abfrage nicht zusammengefasst oder weggelassen. Doppelte Datensätze kommen häufiger vor wenn nur sehr wenige Attribute gleichzeitig angezeigt werden sollen. Es kann Redundanz auftreten, nämlich wenn bei zwei oder mehr Entitäten (bezeichnet in der realen Welt eindeutig identifizierbare einzelne Objekte) alle gezeigten Attribute denselben Inhalt haben, z.B. gleiche Namen.
Durch die Verwendung von Prädikaten (Parameter) in der SELECT-Anweisung kann eine Zusammenfassung erreicht werden. Wenn wir beispielsweise aus unserer Datenbank eine Liste erzeugen, die alle Nachnamen enthält, die als weitere Einschränkung mit A beginnen, ist es sehr wahrscheinlich, dass häufige Namen mehrfach auftauchen.

Wir können die Abfrage aber auch so stellen, dass jeder Name nur einmal auftaucht. Das geschieht mit dem Wort DISTINCT. Es verhindert die Auswahl von Duplikaten in den ausgewählten Spalten und steht direkt nach SELECT und vor der Feldliste

SELECT Prädikat Feldliste
FROM   ...

DISTINCT erkennt schon bei einem Unterschied in nur einer Spalte, dass unterschiedliche Datensätze vorliegen. Als weitere Prädikate kommen in Frage:

Die Prädikate DISTINCT und ALL können wir in einer Abfrage ausprobieren. Wählen wir zur Veranschaulichung von Mitarbeitern die Position aus der Tabelle tbl_mitarbeiter aus. Einmal ohne und dann mit Anzeige von Duplikaten. Das sieht dann so aus:

SELECT DISTINCT position
FROM   tbl_mitarbeiter

SELECT ALL position
FROM   tbl_mitarbeiter

In dieser SQL-Abfrage wird die Spalte position der Tabelle tbl_mitarbeiter in eine Ergebnistabelle projiziert. Die Ausgabeliste der Tabelle enthält alle Berufsbezeichnungen, im ersten Fall ohne doppelte Eintragungen und im zweiten auch mehrfach vorkommende. Der optionale Parameter ALL kann weggelassen werden.
… Versuchen Sie es selbst! Die DISTINCT-Abfrage liefert 8 Ergebnisse und die ALL-Abfrage 21.